export class AxiosScheduler {
  constructor() {
    this.queue = []
    this.count = 0
    this.maxCount = 6
  }
  async add(task) {
    // count 不大于 maxCount 时，直接执行任务
    if (this.count >= this.maxCount) {
      await new Promise(resolve => {
        this.queue.push(resolve)
      })
    }
    // 执行任务前增加并发计数
    this.count++
    try {
      // 等待执行任务
      await task()
    } finally {
      // 任务执行完成 count 减一
      this.count--
      // 从队列中取出一个 resolve 来释放等待的任务
      if (this.queue.length > 0) {
        const resolve = this.queue.shift()
        resolve() // 触发下一个任务的执行
      }
    }
  }
}
